home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / misc / emu / SpecConvert106.lha / src / spconv.h < prev   
Encoding:
C/C++ Source or Header  |  1994-02-18  |  8.5 KB  |  354 lines

  1. #ifndef SPCONV_H
  2. #define SPCONV_H
  3.  
  4. /* Function Prototypes */
  5.  
  6. /* I/O routines */
  7. void read_image(char * s);
  8. void write_image(char * s);
  9. void read_sna(char * s);
  10. void write_sna(char * s);
  11. void read_vgaspec_header(char * s);
  12. void read_vgaspec(char * s);
  13. void write_vgaspec(char * s);
  14. void read_old_vgaspec(char * s);
  15. void write_old_vgaspec(char * s);
  16. void read_raw(char * s);
  17. void read_z80(char * s);
  18. void write_z80(char * s);
  19. void read_prg(char * s);
  20. void write_prg(char * s);
  21. void read_ach(char * s);
  22. void write_ach(char * s);
  23. void read_kgb(char * s);
  24. void write_kgb(char * s);
  25.  
  26. /* Conversion routines */
  27. void vgaspec_to_sna(void);
  28. void raw_to_sna(void);
  29. void z80_to_sna(void);
  30. void prg_to_sna(void);
  31. void ach_to_sna(void);
  32. void kgb_to_sna(void);
  33.  
  34. void sna_to_vgaspec(void);
  35. void sna_to_z80(void);
  36. void sna_to_prg(char * n);
  37. void sna_to_ach(void);
  38. void sna_to_kgb(void);
  39.  
  40. /* 16K page read function for Z80 format */
  41. int z80_read_page(char * s);
  42.  
  43. /* Compression/Decompression for Z80 */
  44. void z80_read_uncompress(FILE * fd, unsigned int start, unsigned int length);
  45. void z80_uncompress(unsigned int start, unsigned int length);
  46. int  z80_compress(void);
  47.  
  48. /* File header for file from RS232 Link - used for RAW conversion */
  49. union header_u {
  50.     char in[9];
  51.     struct {
  52.         char type;
  53.         unsigned int  length;
  54.         unsigned int  start;
  55.         char var;
  56.         char res1;
  57.         int  line;
  58.     } header;
  59. } h;
  60.  
  61. /* The contents of the header for a RAW file */
  62. char expect[]={
  63.     0x03,        /* type CODE */
  64.     0x00,0xc0,    /* image size */
  65.     0x00,0x40,    /* image start */
  66.     0xff,        /* var */
  67.     0xff,        /* res1 */
  68.     0xff,0xff    /* line */
  69. };    
  70.  
  71. /* Register storage structures for the various types */
  72. struct sna_s {
  73.     unsigned char i;
  74.     unsigned char lax;
  75.     unsigned char hax;
  76.     unsigned char eax;
  77.     unsigned char dax;
  78.     unsigned char cax;
  79.     unsigned char bax;
  80.     unsigned char fax;
  81.     unsigned char aax;
  82.     unsigned char l;
  83.     unsigned char h;
  84.     unsigned char e;
  85.     unsigned char d;
  86.     unsigned char c;
  87.     unsigned char b;
  88.     unsigned char iyl;
  89.     unsigned char iyh;
  90.     unsigned char ixl;
  91.     unsigned char ixh;
  92.     unsigned char iff2;
  93.     unsigned char r;
  94.     unsigned char f;
  95.     unsigned char a;
  96.     unsigned char spl;
  97.     unsigned char sph;
  98.     unsigned char im;
  99.     unsigned char border;
  100. };
  101.  
  102. struct vga_s {
  103. /*00*/    unsigned char S;
  104. /*01*/    unsigned char P;
  105. /*02*/    unsigned char len_l;
  106. /*03*/    unsigned char len_h;
  107. /*04*/    unsigned char start_l;
  108. /*05*/    unsigned char start_h;
  109. /*06*/    unsigned char c;
  110. /*07*/    unsigned char b;
  111. /*08*/    unsigned char e;
  112. /*09*/    unsigned char d;
  113. /*0A*/    unsigned char l;
  114. /*0B*/    unsigned char h;
  115. /*0C*/    unsigned char f;
  116. /*0D*/    unsigned char a;
  117. /*0E*/    unsigned char ixl;
  118. /*0F*/    unsigned char ixh;
  119. /*10*/    unsigned char iyl;
  120. /*11*/    unsigned char iyh;
  121. /*12*/    unsigned char cax;
  122. /*13*/    unsigned char bax;
  123. /*14*/    unsigned char eax;
  124. /*15*/    unsigned char dax;
  125. /*16*/    unsigned char lax;
  126. /*17*/    unsigned char hax;
  127. /*18*/    unsigned char fax;
  128. /*19*/    unsigned char aax;
  129. /*1A*/    unsigned char r;
  130. /*1B*/    unsigned char i;
  131. /*1C*/    unsigned char spl;
  132. /*1D*/    unsigned char sph;
  133. /*1E*/    unsigned char pcl;
  134. /*1F*/    unsigned char pch;
  135. /*20*/    unsigned char res2;
  136. /*21*/    unsigned char res3;
  137. /*22*/    unsigned char border;
  138. /*23*/    unsigned char res4;
  139. /*24*/    unsigned char im;
  140. /*25*/    unsigned char res5;
  141. };
  142.  
  143. struct z80_s {
  144. /*00*/    unsigned char a;
  145. /*01*/    unsigned char f;
  146. /*02*/    unsigned char c;
  147. /*03*/    unsigned char b;
  148. /*04*/    unsigned char l;
  149. /*05*/    unsigned char h;
  150. /*06*/    unsigned char pcl;
  151. /*07*/    unsigned char pch;
  152. /*08*/    unsigned char spl;
  153. /*09*/    unsigned char sph;
  154. /*0A*/    unsigned char i;
  155. /*0B*/    unsigned char r;
  156. /*0C*/    unsigned char data;
  157. /*0D*/    unsigned char e;
  158. /*0E*/    unsigned char d;
  159. /*0F*/    unsigned char cax;
  160. /*10*/    unsigned char bax;
  161. /*11*/    unsigned char eax;
  162. /*12*/    unsigned char dax;
  163. /*13*/    unsigned char lax;
  164. /*14*/    unsigned char hax;
  165. /*15*/    unsigned char aax;
  166. /*16*/    unsigned char fax;
  167. /*17*/    unsigned char iyl;
  168. /*18*/    unsigned char iyh;
  169. /*19*/    unsigned char ixl;
  170. /*1A*/    unsigned char ixh;
  171. /*1B*/    unsigned char iff1;
  172. /*1C*/    unsigned char iff2;
  173. /*1D*/    unsigned char im;
  174. /* Extended 2.01 header, flagged with PC=0 */
  175. /*1E*/    unsigned char h2_len_l;
  176. /*1F*/    unsigned char h2_len_h;
  177. /*20*/  unsigned char n_pcl;
  178. /*21*/  unsigned char n_pch;
  179. /*22*/  unsigned char hardware;
  180. /*23*/  unsigned char samram;
  181. /*24*/  unsigned char if1_paged;
  182. /*25*/  unsigned char r_ldir_emu;
  183. /*26*/  unsigned char last_out;
  184. /*27*/  unsigned char sound_reg[16];
  185. };
  186.  
  187. struct z80_page_s {
  188. /*00*/    unsigned char blocklen_l;
  189. /*01*/    unsigned char blocklen_h;
  190. /*02*/    unsigned char page_num;
  191. };
  192.  
  193. #define z80_145_size 0x1e    /* length of z80_145 header */
  194.  
  195. struct prg_s {
  196. /*00*/    char name[10];
  197. /*0A*/    char nullbyte;
  198. /*0B*/    unsigned char contains_0x61;
  199. /*0C*/    unsigned char contains_0x35;
  200. /*0D*/    unsigned char contains_0x03;
  201. /*0E*/  unsigned char contains_0x00[0xdc-0x0e];
  202. /*DC*/    unsigned char iyl;
  203. /*DD*/    unsigned char iyh;
  204. /*DE*/    unsigned char ixl;
  205. /*DF*/    unsigned char ixh;
  206. /*E0*/    unsigned char eax;
  207. /*E1*/    unsigned char dax;
  208. /*E2*/    unsigned char cax;
  209. /*E3*/    unsigned char bax;
  210. /*E4*/    unsigned char lax;
  211. /*E5*/    unsigned char hax;
  212. /*E6*/    unsigned char fax;
  213. /*E7*/    unsigned char aax;
  214. /*E8*/    unsigned char e;
  215. /*E9*/    unsigned char d;
  216. /*EA*/    unsigned char c;
  217. /*EB*/    unsigned char b;
  218. /*EC*/    unsigned char l;
  219. /*ED*/    unsigned char h;
  220. /*EE*/    unsigned char iff2;
  221. /*EF*/    unsigned char i;
  222. /*F0*/    unsigned char spl;
  223. /*F1*/    unsigned char sph;
  224. /*F2*/    unsigned char filler[0x0e];
  225. };
  226.  
  227. struct ach_s {
  228. /*00*/    unsigned char a;
  229. /*01*/    unsigned char fill1[3];
  230. /*04*/    unsigned char f;
  231. /*05*/    unsigned char fill2[3];
  232. /*08*/    unsigned char b;
  233. /*09*/    unsigned char fill3[3];
  234. /*0C*/    unsigned char c;
  235. /*0D*/  unsigned char fill4[3];
  236. /*10*/    unsigned char d;
  237. /*11*/    unsigned char fill5[3];
  238. /*14*/    unsigned char e;
  239. /*15*/    unsigned char fill6[3];
  240. /*18*/    unsigned char h;
  241. /*19*/    unsigned char fill7[3];
  242. /*1C*/    unsigned char l;
  243. /*1D*/    unsigned char fill8[3];
  244. /*20*/    unsigned char pcl;
  245. /*21*/    unsigned char pch;
  246. /*22*/    unsigned char fill9[2];
  247. /*24*/  unsigned char fill10[4];
  248. /*28*/  unsigned char spl;
  249. /*29*/  unsigned char sph;
  250. /*2A*/    unsigned char fill11[0x94-0x2A];
  251. /*94*/    unsigned char i;
  252. /*95*/    unsigned char fill12[0x9C-0x95];
  253. /*9C*/    unsigned char border;
  254. /*9D*/    unsigned char fill13[0xa4-0x9D];
  255. /*A4*/  unsigned char im;
  256. /*A5*/    unsigned char fill14[0xbe-0xa5];
  257. /*BE*/  unsigned char r;
  258. /*BF*/  unsigned char iff2;
  259. /*C0*/    unsigned char fill15[0xec-0xc0];
  260. /*EC*/    unsigned char aax;
  261. /*ED*/    unsigned char fax;
  262. /*EE*/    unsigned char fill16[2];
  263. /*F0*/    unsigned char bax;
  264. /*F1*/    unsigned char cax;
  265. /*F2*/    unsigned char fill17[2];
  266. /*F4*/    unsigned char dax;
  267. /*F5*/    unsigned char eax;
  268. /*F6*/    unsigned char hax;
  269. /*F7*/    unsigned char lax;
  270. /*F8*/  unsigned char ixl;
  271. /*F9*/  unsigned char ixh;
  272. /*FA*/  unsigned char fill18[2];
  273. /*FC*/  unsigned char iyl;
  274. /*FD*/  unsigned char iyh;
  275. /*FE*/    unsigned char fill19[2];
  276. };
  277.  
  278. struct kgb_s {
  279. /*00*/    unsigned char unused_1[0x84-0x00];
  280. /*84*/    unsigned char settings[0x8E-0x84];
  281. /*8E*/    unsigned char interruptstatus;
  282. /*8F*/    unsigned char is0_1;
  283. /*90*/    unsigned char is3_1;
  284. /*91*/    unsigned char colourmode;
  285. /*92*/    unsigned char is0_2;
  286. /*93*/    unsigned char is0_3;
  287. /*94*/    unsigned char is0_4;
  288. /*95*/    unsigned char is0_5;
  289. /*96*/  unsigned char b;
  290. /*97*/  unsigned char c;
  291. /*98*/  unsigned char bax;
  292. /*99*/  unsigned char cax;
  293. /*9A*/  unsigned char d;
  294. /*9B*/  unsigned char e;
  295. /*9C*/  unsigned char dax;
  296. /*9D*/  unsigned char eax;
  297. /*9E*/  unsigned char h;
  298. /*9F*/  unsigned char l;
  299. /*A0*/  unsigned char hax;
  300. /*A1*/  unsigned char lax;
  301. /*A2*/  unsigned char ixh;
  302. /*A3*/  unsigned char ixl;
  303. /*A4*/  unsigned char iyh;
  304. /*A5*/  unsigned char iyl;
  305. /*A6*/  unsigned char i;
  306. /*A7*/  unsigned char r;
  307. /*A8*/  unsigned char is0_6;
  308. /*A9*/    unsigned char is0_7;
  309. /*AA*/  unsigned char is0_8;
  310. /*AB*/  unsigned char aax;
  311. /*AC*/  unsigned char is0_9;
  312. /*AD*/  unsigned char a;
  313. /*AE*/  unsigned char is0_10;
  314. /*AF*/  unsigned char fax;
  315. /*B0*/  unsigned char is0_11;
  316. /*B1*/  unsigned char f;
  317. /*B2*/  unsigned char is0_12;
  318. /*B3*/  unsigned char is0_13;
  319. /*B4*/  unsigned char pch;
  320. /*B5*/  unsigned char pcl;
  321. /*B2*/  unsigned char is0_14;
  322. /*B3*/  unsigned char is0_15;
  323. /*B8*/  unsigned char sph;
  324. /*B9*/  unsigned char spl;
  325. /*BA*/  unsigned char is0_16;
  326. /*BB*/  unsigned char soundmode;
  327. /*BC*/  unsigned char is0_17;
  328. /*BD*/  unsigned char haltmode;
  329. /*BE*/  unsigned char intmode_h;
  330. /*BF*/  unsigned char intmode_l;
  331. /*C0*/    unsigned char unused_2[0xCA-0xC0];
  332. };
  333.  
  334. /* Constants */
  335. #define IMSIZE 49152L
  336.  
  337. /* Constants for Z80 Compression/Decompression */
  338. #define NOTCOMPRESSED    0
  339. #define COMPRESSED    0x20
  340. #define NO        0
  341. #define YES        1
  342.  
  343. /* Contstants for the implemented formats in this version */
  344. #define    RAW        1
  345. #define SNA        2
  346. #define    SP        3
  347. #define    Z80        4
  348. #define    PRG        5
  349. #define    ACH        6
  350. #define KGB        7
  351. #define    UNKNOWN        8
  352.  
  353. #endif /* SPCONV_H */
  354.